From dbeb0c9ca864a61615ed2dae66110d29d42113c5 Mon Sep 17 00:00:00 2001 From: Matthias Clasen Date: Wed, 25 Jun 2014 23:42:47 -0400 Subject: [PATCH] GtkViewport: Use style classes for shadow Translate shadow != None into the FRAME style class. This doesn't change the style classes used for drawing, it only sets the style class permanently instead of saving and restoring in draw(). https://bugzilla.gnome.org/show_bug.cgi?id=732256 --- gtk/gtkviewport.c | 24 ++++++++++++------------ 1 file changed, 12 insertions(+), 12 deletions(-) diff --git a/gtk/gtkviewport.c b/gtk/gtkviewport.c index 7225038676..9fa63cd851 100644 --- a/gtk/gtkviewport.c +++ b/gtk/gtkviewport.c @@ -277,6 +277,7 @@ gtk_viewport_init (GtkViewport *viewport) priv->pixel_cache = _gtk_pixel_cache_new (); + gtk_style_context_add_class (gtk_widget_get_style_context (GTK_WIDGET (viewport)), GTK_STYLE_CLASS_FRAME); viewport_set_adjustment (viewport, GTK_ORIENTATION_HORIZONTAL, NULL); viewport_set_adjustment (viewport, GTK_ORIENTATION_VERTICAL, NULL); } @@ -606,6 +607,7 @@ gtk_viewport_set_shadow_type (GtkViewport *viewport, { GtkViewportPrivate *priv; GtkWidget *widget; + GtkStyleContext *context; g_return_if_fail (GTK_IS_VIEWPORT (viewport)); @@ -616,6 +618,12 @@ gtk_viewport_set_shadow_type (GtkViewport *viewport, { priv->shadow_type = type; + context = gtk_widget_get_style_context (widget); + if (type != GTK_SHADOW_NONE) + gtk_style_context_add_class (context, GTK_STYLE_CLASS_FRAME); + else + gtk_style_context_remove_class (context, GTK_STYLE_CLASS_FRAME); + gtk_widget_queue_resize (widget); g_object_notify (G_OBJECT (viewport), "shadow-type"); @@ -856,18 +864,10 @@ gtk_viewport_draw (GtkWidget *widget, context = gtk_widget_get_style_context (widget); - if (gtk_cairo_should_draw_window (cr, gtk_widget_get_window (widget)) && - priv->shadow_type != GTK_SHADOW_NONE) - { - gtk_style_context_save (context); - gtk_style_context_add_class (context, GTK_STYLE_CLASS_FRAME); - - gtk_render_frame (context, cr, 0, 0, - gdk_window_get_width (gtk_widget_get_window (widget)), - gdk_window_get_height (gtk_widget_get_window (widget))); - - gtk_style_context_restore (context); - } + if (gtk_cairo_should_draw_window (cr, gtk_widget_get_window (widget))) + gtk_render_frame (context, cr, 0, 0, + gdk_window_get_width (gtk_widget_get_window (widget)), + gdk_window_get_height (gtk_widget_get_window (widget))); if (gtk_cairo_should_draw_window (cr, priv->bin_window)) { -- 2.30.2